package com.lxyk.service.impl;

import cn.hutool.crypto.digest.DigestUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.lxyk.mapper.AccountMapper;
import com.lxyk.pojo.Account;
import com.lxyk.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Objects;

/**
 * @ClassName AccountServiceImpl
 * @Description TODO
 * @Author FJQ
 * @Date 2022/10/21 14:35
 * @Version 1.0
 **/
@Service
public class AccountServiceImpl implements AccountService {

    @Autowired
    private AccountMapper mapper;

    /**
     * 用户登录
     * 步骤：
     * 1 根据用户名查询对应的账户信息
     * 2 判断账户是否为空，如果为空登录失败，返回false
     * 3 如果账户非空，对用户输入的密码进行MD5加密
     * 4 比较数据库的密码和加密的密码是否相等
     * 5 如果相等，登录成功返回true，否则，登录失败返回false
     * @param userName 用户名
     * @param userPwd 密码
     * @return true登录成功，false登录失败
     */
    @Override
    public boolean login(String userName, String userPwd) {
        QueryWrapper<Account> wrapper = new QueryWrapper<Account>();
        // 1 根据用户名查询对应的账户信息
        wrapper.eq("user_name",userName);
        Account account = mapper.selectOne(wrapper);
        // 2 判断账户是否为空，如果为空登录失败，返回false
        if (null == account) {
            return false;
        }
        // 3 如果账户非空，对用户输入的密码进行MD5加密
        String encodePwd = DigestUtil.md5Hex(userPwd);

        // 4 比较数据库的密码和加密的密码是否相等
        if(Objects.equals(encodePwd,account.getUserPwd())){
            return true;
        }else{
        // 5 如果相等，登录成功返回true，否则，登录失败返回false
            return false;
        }
    }

    @Override
    public Account login(Account account) {
        QueryWrapper<Account> wrapper = new QueryWrapper<Account>();
        // 1 根据用户名查询对应的账户信息
        wrapper.eq("user_mobile",account.getUserMobile());
        account = mapper.selectOne(wrapper);
        Account login = mapper.login(account);
        return login;
    }

    @Override
    public boolean pwdUser(Account account1) {
        QueryWrapper qw = new QueryWrapper();
        qw.eq("user_name",account1.getUserName());
        int update = mapper.update(account1, qw);
        if (update > 0 ){
            return true;
        }else {
            return false;
        }
    }
}
